JSTL (JSP Standard Tag Library) হল একটি ট্যাগ লাইব্রেরি যা জেএসপি (JSP) পেজে বিভিন্ন ধরনের সাধারণ কাজ সম্পাদন করতে ব্যবহৃত হয়। JSTL Core Library প্রধানত কন্ট্রোল স্ট্রাকচার (যেমন লুপ, শর্ত, অ্যাট্রিবিউট হ্যান্ডলিং) এবং ফ্লো কন্ট্রোল ট্যাগ সরবরাহ করে, যা জেএসপি কোডের সিম্প্লিফিকেশন এবং রিডেবিলিটি বাড়ায়।
JSTL Core Library ব্যবহার করার মাধ্যমে ডেভেলপাররা কম কোডে কাজ করতে পারেন এবং ওয়েব পেজে কার্যকরী ডাইনামিক কন্টেন্ট সন্নিবেশ করতে পারেন। এটি জাভা কোড লেখার পরিমাণ কমিয়ে দেয়, ফলে কোড আরো সহজ এবং পরিষ্কার হয়।
JSTL Core Library এর প্রধান ট্যাগ
JSTL Core Library-তে বেশ কয়েকটি গুরুত্বপূর্ণ ট্যাগ রয়েছে, যার মাধ্যমে জেএসপি পেজে বিভিন্ন কাজ করা যায়। নিচে কিছু প্রাথমিক ট্যাগ এবং তাদের ব্যবহার দেখানো হলো:
১. <c:if> - শর্তাধীন (Conditional) ট্যাগ
এই ট্যাগটি একটি শর্ত (condition) যাচাই করে এবং শর্ত পূর্ণ হলে নির্দিষ্ট কোড ব্লকটি কার্যকরী করে।
<c:if test="${userAge > 18}">
<p>আপনি ১৮ বছরের বেশি বয়সী।</p>
</c:if>
এখানে test অ্যাট্রিবিউটের মাধ্যমে শর্ত প্রদান করা হয়, এবং শর্ত পূর্ণ হলে <p> ট্যাগের মধ্যে প্রদর্শন করা হয়।
২. <c:choose> - শর্তের মধ্যে একাধিক বিকল্প (Multiple conditions)
<c:choose> ট্যাগটি একাধিক শর্তের জন্য ব্যবহার করা হয়। এটি <c:when> এবং <c:otherwise> ট্যাগের মধ্যে ব্যবহৃত হয়।
<c:choose>
<c:when test="${userAge > 18}">
<p>আপনি প্রাপ্তবয়স্ক।</p>
</c:when>
<c:otherwise>
<p>আপনি প্রাপ্তবয়স্ক নন।</p>
</c:otherwise>
</c:choose>
এখানে <c:when> শর্ত পূর্ণ হলে একটি বার্তা প্রদর্শন করবে এবং <c:otherwise> শর্ত পূর্ণ না হলে অন্য একটি বার্তা দেখাবে।
৩. <c:forEach> - লুপ ট্যাগ
এই ট্যাগটি একটি তালিকা বা অ্যারে এর উপর লুপ চালিয়ে প্রতিটি আইটেমকে প্রক্রিয়া করতে ব্যবহৃত হয়।
<c:forEach var="item" items="${itemList}">
<p>${item}</p>
</c:forEach>
এখানে items অ্যাট্রিবিউটে একটি তালিকা (যেমন itemList) দেওয়া হয় এবং var দিয়ে প্রতি আইটেমের জন্য একটি পরিবর্তনশীল (যেমন item) নির্ধারণ করা হয়।
৪. <c:out> - আউটপুট ট্যাগ
<c:out> ট্যাগটি জাভা ভ্যারিয়েবল বা এক্সপ্রেশন কে HTML পেজে আউটপুট করার জন্য ব্যবহৃত হয়। এটি XSS (Cross-Site Scripting) আক্রমণ প্রতিরোধের জন্য নিরাপদ আউটপুট নিশ্চিত করে।
<c:out value="${userName}" />
এখানে value অ্যাট্রিবিউটে একটি জাভা ভ্যারিয়েবল (যেমন userName) দেওয়া হয়েছে এবং এটি HTML পেজে প্রিন্ট হবে।
৫. <c:set> - ভ্যালু সেট করা
<c:set> ট্যাগটি একটি নতুন ভ্যালু সেট করতে বা একটি ভ্যারিয়েবল তৈরি করতে ব্যবহৃত হয়।
<c:set var="userName" value="John Doe" />
এখানে var অ্যাট্রিবিউটে ভ্যারিয়েবলের নাম এবং value অ্যাট্রিবিউটে সেই ভ্যারিয়েবলের মান দেওয়া হয়েছে।
JSTL Core Library ব্যবহার করা
JSTL Core Library ব্যবহার করতে আপনাকে প্রথমে জেএসপি পেজে JSTL লাইব্রেরি ইনক্লুড করতে হবে। এর জন্য ট্যাগ লাইব্রেরি ডিরেক্টিভ (taglib directive) ব্যবহার করা হয়।
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
এই লাইব্রেরি ডিরেক্টিভটি পেজে যোগ করার পর আপনি উপরে উল্লেখিত <c:if>, <c:forEach>, <c:out>, ইত্যাদি ট্যাগ ব্যবহার করতে পারবেন।
উদাহরণ
ধরা যাক, আপনার কাছে একটি তালিকা আছে এবং আপনি সেই তালিকার প্রতিটি আইটেম HTML পেজে প্রিন্ট করতে চান:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>আইটেম তালিকা</h2>
<c:forEach var="item" items="${itemList}">
<p>${item}</p>
</c:forEach>
</body>
</html>
এখানে itemList হল একটি ডাটা, যেটি মডেল থেকে কন্ট্রোলারের মাধ্যমে ভিউতে পাঠানো হয়েছে। <c:forEach> ট্যাগটি ওই তালিকাটি লুপ করবে এবং প্রতিটি আইটেম ট্যাগে প্রদর্শন করবে।
সারাংশ
JSTL Core Library জেএসপি পেজে সাধারণ কাজ যেমন শর্তাধীন লজিক, লুপিং, ভ্যালু সেট করা, আউটপুট প্রদর্শন ইত্যাদি সহজভাবে পরিচালনা করতে সহায়ক। এটি কোডের পুনঃব্যবহারযোগ্যতা বাড়ায়, এবং জাভা কোডের পরিমাণ কমিয়ে দেয়, ফলে কোড আরও পরিষ্কার এবং রিডেবল হয়।